<?php

require_once '../dlo/ObjetoDLO.php';

class ObjetoController {

    private $cod_interno;
    private $cod_registro;
    private $numero_serie;
    private $marca;
    private $modelo;
    private $copia;
    private $bibliografia;
    private $etiqueta;
    private $cod_classe;
    private $cod_espaco;
    private $tipo_consulta;

    public function cadastrar() {
        try {
            $dlo = &ObjetoDLO::getInstance();
            $dlo->cadastrar($this->cod_registro, $this->numero_serie, $this->marca, $this->modelo, $this->copia, $this->bibliografia, $this->etiqueta, $this->cod_classe, $this->cod_espaco);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function validarCod_registro() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            echo $dlo->validarCod_registro($this->cod_espaco, $this->cod_registro);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function alterar() {
        try {
            $dlo = &ObjetoDLO::getInstance();
            $dlo->alterar($this->cod_interno, $this->campo_id, $this->campo_valor);
        } catch (Exception $e) {
            if ($e->getMessage() != 'no_action') {
                echo "Exception: " . $e->getMessage();
            } else {
                echo $this->campo_valor;
            }
        }
    }

    public function excluir() {
        $dlo = &ObjetoDLO::getInstance();
        try {
            $dlo->excluir($this->cod_interno);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function listar() {
        $dlo = &ObjetoDLO::getInstance();
        try {
            $dados = array();
            //rever esta parte, ainda deve ser montado o array
            $lista = &$dlo->listar($this->tipo_consulta, $dados);
            foreach ($lista as $row) {
                echo '<tr><td>' . $row["cod_registro"] . '</td>';
                echo '<td>' . $row["nome"] . '</td></tr>';
            }
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function consultar() {
        $dlo = &ObjetoDLO::getInstance();
        try {
            $row = &$dlo->consultar($this->cod_interno);
            $xml = new XMLWriter();
            $xml->openMemory();
            $xml->startDocument('1.0', 'UTF-8');
            $xml->startElement("objeto");
            $xml->writeAttribute('cod_interno', $row['cod_interno']);
            $xml->writeAttribute('cod_registro', $row['cod_registro']);
            $xml->writeAttribute('numero_serie', $row['numero_serie']);
            $xml->writeAttribute('marca', $row['marca']);
            $xml->writeAttribute('modelo', $row['modelo']);
            $xml->writeAttribute('copia', $row['copia']);
            $xml->writeAttribute('bibliografia', $row['bibliografia']);
            $xml->writeAttribute('etiqueta', $row['etiqueta']);
            $xml->endElement();
            header('Content-type: text/xml');
            print $xml->outputMemory(true);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

}

$controller = new ObjetoController($_POST['codinterno'], $_POST['tipoconsulta'], $_POST['pagina'], $_POST['numregistrosporpagina']);
if ($_POST['acao'] == 'cadastrar') {
    $controller->cadastrar();
} elseif ($_POST['acao'] == 'alterar') {
    $controller->alterar();
} elseif ($_POST['acao'] == 'excluir') {
    $controller->excluir();
} elseif ($_POST['acao'] == 'listar') {
    $controller->listar();
} elseif ($_POST['acao'] == 'consultar') {
    $controller->consultar();
}
?>
